/**
 * Copyright (c) 2020 Coder League
 * All rights reserved.
 *
 * File：MobileCybercafeIndexController.java
 * History:
 *         2020年12月28日: Initially created, Chrise.
 */
package club.coderleague.cfss.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import club.coderleague.cfss.annotations.PassiveRequest;
import club.coderleague.cfss.annotations.Request;
import club.coderleague.cfss.domain.beans.CybercafeRegisterRequest;
import club.coderleague.cfss.service.cybercafe.CybercafeService;

/**
 * 移动端网吧默认控制器。
 * @author Chrise
 */
@Controller
@RequestMapping(MobileCybercafeIndexController.REQUEST_PREFIX)
public class MobileCybercafeIndexController extends MobileIndexController {
	/**
	 * 请求前缀。
	 */
	public static final String REQUEST_PREFIX = MobileIndexController.REQUEST_PREFIX + "/cybercafe";
	
	@Autowired
	private CybercafeService cybercafeService;
	
	/**
	 * 前往网吧主页面。
	 * @author Chrise 2020年12月28日
	 * @return 页面路径。
	 */
	@GetMapping(MAIN_REQUEST_SUFFIX)
	@Request("前往网吧主页面")
	public String cybercafeMain() {
		return "/mobile/cybercafe/main";
	}
	
	/**
	 * 检查网吧状态。
	 * @author Chrise 2021年1月12日
	 * @return 检查结果。
	 */
	@ResponseBody
	@PostMapping("/checkCybercafeState.xhtml")
	@PassiveRequest("检查网吧状态")
	public ModelMap checkCybercafeState() {
		Object result = this.cybercafeService.checkCybercafeState(getUserSession());
		if (result == null) return super.createModelOnlyStatus(false);
		
		return super.createModel(true, result);
	}
	
	/**
	 * 加载个人信息。
	 * @author Chrise 2021年2月10日
	 * @return 个人信息。
	 */
	@ResponseBody
	@PostMapping("/loadPersonalInfo.xhtml")
	@PassiveRequest("加载个人信息")
	public ModelMap loadPersonalInfo() {
		return super.createModel(true, this.cybercafeService.loadPersonalInfo(getUserSession()));
	}
	
	/**
	 * 前往重新提交资料页面。
	 * @author Chrise 2021年2月10日
	 * @return 页面路径。
	 */
	@GetMapping("/resubmit.xhtml")
	@Request("前往重新提交资料页面")
	public String resubmit() {
		return "/mobile/cybercafe/me/resubmit";
	}
	
	/**
	 * 加载网吧数据。
	 * @author Chrise 2021年2月10日
	 * @return 网吧数据。
	 */
	@ResponseBody
	@PostMapping("/loadCybercafeData.xhtml")
	@PassiveRequest("加载网吧数据")
	public ModelMap loadCybercafeData() {
		return super.createModel(true, this.cybercafeService.loadCybercafeData(getUserSession()));
	}
	
	/**
	 * 重新提交网吧。
	 * @author Chrise 2021年2月10日
	 * @param request 注册请求。
	 * @param buslicense 营业执照。
	 * @return 提交结果。
	 */
	@ResponseBody
	@PostMapping("/resubmitCybercafe.xhtml")
	@Request("重新提交网吧")
	public ModelMap resubmitCybercafe(CybercafeRegisterRequest request, MultipartFile buslicense) {
		String message = this.cybercafeService.execResubmitCybercafe(request, buslicense, getUserSession());
		if (message != null) return super.createModel(false, message);
		
		return super.createModelOnlyStatus(true);
	}
}
